package com.youlu.campus.website.service;


import com.youlu.campus.website.entity.ActivityType;
import com.youlu.campus.website.entity.ActivityTypePageQuery;
import org.springframework.data.domain.Page;

import java.util.ArrayList;
import java.util.List;

/**
 * 活动简介类型
 */
public interface ActivityTypeService {


    /**
     * 保存标题类型（新增或更新）
     *
     * @param type 标题类型对象
     * @return 保存后的标题类型
     */
    public ActivityType save(ActivityType type);

    /**
     * 根据ID查询标题类型
     *
     * @param id 主键ID
     * @return 标题类型
     */
    public ActivityType getTypeById(String id);


    /**
     * 查询所有标题类型
     *
     * @return 标题类型列表
     */
    public List<ActivityType> listAllTypes();

    /**
     * 查询所有启用的标题类型
     *
     * @return 启用的标题类型列表
     */
    public List<ActivityType> listEnabledType(int pageSize);

    /**
     * 根据ID删除标题类型
     *
     * @param id 主键ID
     */
    public void delete(String id);

    /**
     * 启用/禁用标题类型
     *
     * @param id        主键ID
     * @param isEnabled 是否启用
     * @return 更新后的标题类型
     */
    public ActivityType toggleTypeStatus(String id, boolean isEnabled);

    /**
     * 分页查询
     *
     * @param pageQuery
     * @return
     */
    Page<ActivityType> findByPage(ActivityTypePageQuery pageQuery);

    /**
     * 根据类型查询
     *
     * @param type
     * @return
     */
    ActivityType findByType(String type);

    /**
     * 根据类型查询
     *
     * @param types
     * @return
     */
    List<ActivityType> findByTypeIn(List<String> types);
}
